/*
 * Nodo.h
 *
 *  Created on: 13/04/2013
 *      Author: juan
 */
#include <stdlib.h>
#include <fstream>
#include <iostream>
#include <sstream>
#include "../../Fisica/ArchivoBloques.h"
#include "NodoInterno.h"
#include "NodoHoja.h"
#include <string>

#ifndef NODO_H_
#define NODO_H_

using namespace std;

class Nodo {
public:
        Nodo();
        virtual ~Nodo();


        int agregar(string cancion, unsigned int id);

        static void hidratar(char* bloque);
        virtual void persistir(ArchivoBloques * archivo);
        static Nodo* cargar(ArchivoBloques * arch, unsigned int indice);

        void mostrar();
        virtual bool isEmpty();
        unsigned int getNroDeBloque();
        short unsigned int getNivel();
        string getPrimerClave();
        void aumentarNivel();
        void decrementarNivel();

        void setSiguiente ( unsigned int nrobloque);
        void setNroDeBloque(unsigned int i);

        unsigned int nro_de_bloque;
        short unsigned int nivel;
        short unsigned int nro_de_nodo;
        short unsigned int cantidad_ocupada;

};

//Funciones de clase

#endif /* NODO_H_ */
